import cv2

if __name__ == '__main__':
    # 1. 图片输入
    image_np = cv2.imread('image.jpg')

    # 2. 灰度化
    image_np_grey = cv2.cvtColor(image_np, cv2.COLOR_BGR2GRAY)

    # 3. 固定阈值二值化（非自适应）
    # 调整阈值thresh_value（0-255），让小人区域尽可能为白色，文字为黑色
    thresh_value = 130
    maxval = 255
    ret, image_np_thresh = cv2.threshold(
        image_np_grey,
        thresh_value,
        maxval,
        cv2.THRESH_BINARY  # 大于阈值的为白色（255），小于的为黑色（0）
    )

    # 4. 形态学操作（修正逻辑：基于前一步结果继续处理）
    # 主核
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (13, 13))
    # 先膨胀
    morph_image = cv2.dilate(image_np_thresh, kernel, iterations=1)
    # 再腐蚀
    morph_image = cv2.erode(morph_image, kernel, iterations=7)

    # 5. 图片输出
    cv2.namedWindow('morph_image', cv2.WINDOW_NORMAL)
    cv2.resizeWindow('morph_image', 600, 400)
    cv2.imshow('morph_image', morph_image)
    cv2.imwrite('morph_image.png', morph_image)
    cv2.waitKey(0)
